Membre du Groupe : Ismael Mohamed 295465, Romain Pion 222525, Mathieu Guilbaud 223096

Introduction

Ces données concernent les élèves de deux écoles publiques portugaises et ont été recueillies au cours de l’année scolaire 2005-2006. Nous étudierons toutes les variables et leurs interactions, en mettant l’accent sur les facteurs qui influent sur la réussite des élèves.

1 Préapartion de la data

1.1 Vérification des variables

Chargement des librairies

if(!require("ggplot2")){install.packages("ggplot2")}
## Loading required package: ggplot2
if(!require("dplyr")){install.packages("dplyr")}
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
if(!require("ggwordcloud")){install.packages("ggwordcloud")}
## Loading required package: ggwordcloud
if(!require("readxl")){install.packages("readxl")}
## Loading required package: readxl
if(!require("factorplot")){install.packages("factorplot")}
## Loading required package: factorplot
if(!require("wordcloud2")){install.packages("wordcloud2")}
## Loading required package: wordcloud2
if(!require("readxl")){install.packages("readxl")}
if(!require("factorplot")){install.packages("factorplot")}
if(!require("pheatmap")){install.packages("pheatmap")}
## Loading required package: pheatmap
if(!require("car")){install.packages("car")}
## Loading required package: car
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
if(!require("factoextra")){install.packages("factoextra")}
## Loading required package: factoextra
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
if(!require("cluster")){install.packages("cluster")}
## Loading required package: cluster
if(!require("tidyverse")){install.packages("tidyverse")}
## Loading required package: tidyverse
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ tibble  3.0.4     ✓ purrr   0.3.4
## ✓ tidyr   1.1.2     ✓ stringr 1.4.0
## ✓ readr   1.4.0     ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
## x car::recode()   masks dplyr::recode()
## x purrr::some()   masks car::some()
library(tidyverse)
library(cluster)
library(factoextra)
library(ggplot2)
options(warn=-1)
library(dplyr)
library(readr)
library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:car':
## 
##     logit
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(ggwordcloud)
library(wordcloud2)
library(readxl)
library(factorplot)
library(pheatmap)
library(car)

Chargement des données.

mprbig <- read_excel("MP-5RBIG.xlsx")

Affichage des différentes variable;

head(mprbig)
summary(mprbig)
##     school              sex                 age         address         
##  Length:395         Length:395         Min.   :15.0   Length:395        
##  Class :character   Class :character   1st Qu.:16.0   Class :character  
##  Mode  :character   Mode  :character   Median :17.0   Mode  :character  
##                                        Mean   :16.7                     
##                                        3rd Qu.:18.0                     
##                                        Max.   :22.0                     
##    famsize            Pstatus               Medu            Fedu      
##  Length:395         Length:395         Min.   :0.000   Min.   :0.000  
##  Class :character   Class :character   1st Qu.:2.000   1st Qu.:2.000  
##  Mode  :character   Mode  :character   Median :3.000   Median :2.000  
##                                        Mean   :2.749   Mean   :2.522  
##                                        3rd Qu.:4.000   3rd Qu.:3.000  
##                                        Max.   :4.000   Max.   :4.000  
##      Mjob               Fjob              reason            guardian        
##  Length:395         Length:395         Length:395         Length:395        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##    traveltime      studytime        failures       schoolsup        
##  Min.   :1.000   Min.   :1.000   Min.   :0.0000   Length:395        
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:0.0000   Class :character  
##  Median :1.000   Median :2.000   Median :0.0000   Mode  :character  
##  Mean   :1.448   Mean   :2.035   Mean   :0.3342                     
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:0.0000                     
##  Max.   :4.000   Max.   :4.000   Max.   :3.0000                     
##     famsup              paid            activities          nursery         
##  Length:395         Length:395         Length:395         Length:395        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     higher            internet           romantic             famrel     
##  Length:395         Length:395         Length:395         Min.   :1.000  
##  Class :character   Class :character   Class :character   1st Qu.:4.000  
##  Mode  :character   Mode  :character   Mode  :character   Median :4.000  
##                                                           Mean   :3.944  
##                                                           3rd Qu.:5.000  
##                                                           Max.   :5.000  
##     freetime         goout            Dalc            Walc      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :3.000   Median :3.000   Median :1.000   Median :2.000  
##  Mean   :3.235   Mean   :3.109   Mean   :1.481   Mean   :2.291  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:2.000   3rd Qu.:3.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##      health         absences            G1              G2       
##  Min.   :1.000   Min.   : 0.000   Min.   : 3.00   Min.   : 0.00  
##  1st Qu.:3.000   1st Qu.: 0.000   1st Qu.: 8.00   1st Qu.: 9.00  
##  Median :4.000   Median : 4.000   Median :11.00   Median :11.00  
##  Mean   :3.554   Mean   : 5.709   Mean   :10.91   Mean   :10.71  
##  3rd Qu.:5.000   3rd Qu.: 8.000   3rd Qu.:13.00   3rd Qu.:13.00  
##  Max.   :5.000   Max.   :75.000   Max.   :19.00   Max.   :19.00  
##        G3       
##  Min.   : 0.00  
##  1st Qu.: 8.00  
##  Median :11.00  
##  Mean   :10.42  
##  3rd Qu.:14.00  
##  Max.   :20.00

Vérification s’il n’y a pas de valaure manquante

sum(is.na(mprbig))
## [1] 0

1.2 Ajout de la variable finalResult

finalResult <- NULL
for (x in mprbig$G3) {
  if (x < 10 ) {
   finalResult <- c(finalResult,"fail")
  } else {
   finalResult <- c(finalResult,"pass")
  }
}
mprbig <- data.frame(mprbig,finalResult)
mprbig

1.3 Ajout de la variable academicGrade

academicGrade <- NULL
for (x in mprbig$G3) {
  if (x >= 16  ) {
   academicGrade <- c(academicGrade,"A")
  }
  if (x >= 14 && x < 16) {
   academicGrade <- c(academicGrade,"B")
  }
  if (x >= 12 && x < 14) {
   academicGrade <- c(academicGrade,"C")
  }
  if (x >= 10 && x < 12) {
   academicGrade <- c(academicGrade,"D")
  }
  if (x <= 9){
    academicGrade <- c(academicGrade,"E")
  }
}
mprbig <- data.frame(mprbig,academicGrade)
mprbig

2 Etude des variables catégorielles

2.1 Étudiez individuellement les principales variables catégorielles

Le genre La majorité des individus sont des femmes

ggplot(data=mprbig,aes(x=sex,fill=sex)) + geom_bar()

L’éducation de la mère La majorité des individus ont une mère avec un niveau d’étude élevé

ggplot(data=mprbig,aes(x=Medu,fill=Medu))+geom_bar()

L’éducation du père La majorité des individus ont un père ayant un niveau d’étude élevé

ggplot(data=mprbig,aes(x=Fedu,fill=Fedu))+geom_bar()

Le support pédagogique suplémentaire La majorité des individus n’ont pas de support pédagogique suplémentaire

ggplot(data=mprbig,aes(x=schoolsup,fill=schoolsup))+geom_bar()

Le soutien éducatif familial La majorité des individus ont un soutien éducatif familial

ggplot(data=mprbig,aes(x=famsup,fill=famsup))+geom_bar()

Les cours de mathématiques payant suplémentaire La majorité des individus ne suivent pas de cours de mathématiques payant suplémentaire

ggplot(data=mprbig,aes(x=paid,fill=paid))+geom_bar()

Nombre d’individus voulant suivre des études supérieurs La majorité des individus veulent suivre des études supérieurs

ggplot(data=mprbig,aes(x=higher,fill=higher))+geom_bar()

L’accès à internet à son domicile La majorité des individus ont accès à internet

ggplot(data=mprbig,aes(x=internet,fill=internet))+geom_bar()

Les admis La majorité des individus ont réussie leur examen

ggplot(data=mprbig,aes(x=finalResult,fill=finalResult))+geom_bar()

Le niveau obtenu à l’examen La majorité des individus ont obtenu le niveau E

ggplot(data=mprbig,aes(x=academicGrade,fill=academicGrade))+geom_bar()

## 2.2 Représente les associations entre des paires de variables catégorielles

Analyse du genre sur le support pédagogique suplémentaire Proportionellement, les femmes reçoivent plus souvent un support pédagogique suplémentaire que les hommes

ggplot(data=mprbig,aes(x=sex,fill=schoolsup))+geom_bar()

Analyse du genre sur l’aide éducatif familial Les hommes reçoivent plus souvent de l’aide éducatif familial que les femmes

ggplot(data=mprbig,aes(x=sex,fill=famsup))+geom_bar()

Analyse du genre sur l’envie de suivre des études supérieurs Les femmes ont majoritairement envie de faire des études supérieurs

ggplot(data=mprbig,aes(x=sex,fill=higher))+geom_bar()

Analyse du genre sur l’obtention du diplome Les hommes ont proportionellement mieux réussie à obtenir leur diplome que les femmes

ggplot(data=mprbig,aes(x=sex,fill=finalResult))+geom_bar()

Analyse du genre sur le niveau obtenu suite à l’examen Les femmes ont de meilleurs résultats que les hommes

ggplot(data=mprbig,aes(x=academicGrade,fill=sex))+geom_bar()

Analyse du niveau d’étude de la mère sur l’obtention de l’examen Les individus ayant réussie leur examen ont majoritairement une mère avec un haut niveau d’étude

ggplot(data=mprbig,aes(x=Medu,fill=finalResult))+geom_bar()

Analyse du support pédagogique suplémentaire sur l’aide éducatif familial Les individus ayant du support pédagogique suplémentaire ont plus d’aide éducatif familial

ggplot(data=mprbig,aes(x=schoolsup,fill=famsup))+geom_bar()

Analyse de l’envie de faire des études supérieurs sur le niveau d’étude de la mère Les individus ayant envie de faire des études supérieurs ont en grande partie une mère ayant un haut niveau d’étude

ggplot(data=mprbig,aes(x=Medu,fill=higher))+geom_bar()

Analyse de l’envie de faire des études supérieurs sur le niveau d’étude du père Les individus ayant envie de faire des études supérieurs ont majoritairement un père ayant un niveau d’étude élevé

ggplot(data=mprbig,aes(x=Fedu,fill=higher))+geom_bar()

Analyse du niveau d’étude du père sur l’obtention de l’examen Le niveau d’étude du père ne semble pas avoir d’impact sur l’obtention de l’examen

ggplot(data=mprbig,aes(x=Fedu,fill=finalResult))+geom_bar()

Analyse de la possession de internet sur l’obtention de l’examen La majorité des individus ayant réussie leur examen ont internet

ggplot(data=mprbig,aes(x=internet,fill=finalResult))+geom_bar()

Analyse de la possession de internet sur le niveau obtenu à l’examen Les meilleurs notes ont été obtenue par des individus ayant internet ( grade E )

ggplot(data=mprbig,aes(x=academicGrade,fill=internet))+geom_bar()

## 2.3 Étudiez les associations entre des paires de variables catégorielles

Analyse du genre sur l’envie de faire des études supérieurs

# association sex, envie de faire des études supérieurs
test = chisq.test(mprbig$sex,mprbig$higher)
test$statistic # la statistique du Chi2
## X-squared 
##  7.685935
test$parameter # le nombre de degrés de libertés
## df 
##  1
test$p.value # la p-value
## [1] 0.005565284
test$observed # la matrice observée de départ
##           mprbig$higher
## mprbig$sex  no yes
##          F   4 204
##          M  16 171
test$expected # la matrice attendue sous l'hypothèse nulle d'absence de biais
##           mprbig$higher
## mprbig$sex        no      yes
##          F 10.531646 197.4684
##          M  9.468354 177.5316

On constate que la p-value étant inférieur à 5%, On rejette l’hypothèse de dépendance entre les deux variables

Analyse de l’envie de faire des études supérieurs sur l’obtention de l’examen

# association envie de faire des études supérieures, obtention de l'examen
test = chisq.test(mprbig$higher,mprbig$finalResult)
test$statistic # la statistique du Chi2
## X-squared 
##  8.353142
test$parameter # le nombre de degrés de libertés
## df 
##  1
test$p.value # la p-value
## [1] 0.00385021
test$observed # la matrice observée de départ
##              mprbig$finalResult
## mprbig$higher fail pass
##           no    13    7
##           yes  117  258
test$expected # la matrice attendue sous l'hypothèse nulle d'absence de biais
##              mprbig$finalResult
## mprbig$higher       fail      pass
##           no    6.582278  13.41772
##           yes 123.417722 251.58228

On constate que la p-value étant inférieur à 5%, On rejette l’hypothèse de dépendance entre les deux variables

3 Etude des variables quantitatives

3.1 Étude individuelle des principales variables quantitatives

Etudier la varible age

student <- mprbig
var(student$age)
## [1] 1.628285
age= ggplot(aes(x=age), data=student)+
  geom_histogram(binwidth = 0.50, fill='darkblue', color='darkblue')+
  ggtitle("Age of students")
age

L’histogramme ci-dessus montre clairement que la plupart des élèves ont entre 15 et 18 ans, ce qui est logique puisque la plupart des élèves commencent le lycée à l’âge de 15 ans et le terminent à 18 ans, étant donné qu’en général, les lycées du monde entier ne durent que 3 ans.

Etudier la varible studytime

ggplot(student,aes(x=studytime,y=G3)) + stat_summary(fun="mean", geom="bar",fill="darkblue") + ggtitle("G3 versus studytime")

Comme le montre la figure ci-dessus, les étudiants qui étudient plus longtemps obtiennent de meilleures notes finales que ceux qui étudient moins longtemps.

Étude de la variable failure

Répartition des échecs précédents.

ggplot(data = student, aes(x = failures)) +
  geom_histogram(binwidth = 0.50, fill='darkblue', color='darkblue') +
  geom_density() +
  ggtitle("Distribution of previous failures in student data") +
  xlab("Failures") +
  ylab("Distribution of Failures")+
  theme(plot.title=element_text(face="bold"))

Afficher la corrélation entre les échecs et les notes.

cor(student$G3, student$failures)
## [1] -0.3604149
plot(x=student$failures, y=student$G3, xlab = "Failures", ylab = "Rank", col = "blue")

Étude de la variable absences

absences= ggplot(data=student,aes(x=absences, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)
absences
## `geom_smooth()` using formula 'y ~ x'

À partir du graphique ci-dessus, nous pouvons voir comment l’absence affecte négativement les performances des garçons, mais l’absence de cours n’a pas d’impact négatif sur les performances des filles en classe.

Étude de la variable G1

var(student$G1)
## [1] 11.01705
ages= ggplot(data=student,aes(x=age, fill=sex))+geom_histogram(binwidth=0.50)
ages

Comme le montre clairement le graphique ci-dessus, la plupart des étudiants de plus de 18 ans sont des étudiants de sexe masculin car il n’y a pas d’étudiantes de plus de 20 ans.

G1 par rapport au sexe et à l’âge

G1=ggplot(data=student,aes(x=age, y=G1, col=sex, shape=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)
G1
## `geom_smooth()` using formula 'y ~ x'

Nous pouvons voir que les performances des filles s’améliorent avec l’âge, cependant, une diminution des performances des garçons et nettement visible dans le graphique ci-dessus.

————– g2

3.2 Calcul de la matrice de corrélation pour les variables quantitatives.

Carte thermique pour la matrice de corrélation

numeric_features <- Filter(is.numeric, student)

library(pheatmap)
pheatmap(cor(numeric_features))

Comme montre la carte, la corrélation varie entre 1 et -1. La couleur rouge correspond à la corrélation élevée entre nos caractéristiques.

Par exemple : Corrélation positive : G1 et G3 Corrélation négative : les failures et le studytime présentent une corrélation négative

Matrice de nuage de points G1 et G3

#plot(with(student,G2), with(student,G3), xlab='G1', ylab='G3')
ggplot(student, aes(x=G2,y=G3)) + geom_point() + geom_smooth(method="lm", se=FALSE)
## `geom_smooth()` using formula 'y ~ x'

On peut remarquer le G3 présente une forte corrélation positive avec le G2.

Régression multiple entre la variable G3 par rapport à age

ggplot(student,aes(x=G3))+geom_histogram(fill="darkblue",color="darkblue",na.rm=TRUE)+
    labs(title="Classement des notes G3 par rapport à l'âge",y="",x="")+facet_wrap(~age)+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

4 Étude des relations entre les variables catégorielles et quantitatives.

4.1 Représenter les associations entre les variables quantitatives et les variables catégorielles (Boxplots, Bar charts for means, Stacked bar charts, Multiple histograms, etc.)

contengency <- table(student$G3,student$sex)
print(contengency)
##     
##       F  M
##   0  23 15
##   4   1  0
##   5   3  4
##   6  13  2
##   7   4  5
##   8  14 18
##   9  17 11
##   10 30 26
##   11 29 18
##   12 11 20
##   13 17 14
##   14 14 13
##   15 16 17
##   16  6 10
##   17  3  3
##   18  5  7
##   19  2  3
##   20  0  1

Consultation de la dépendance avec un stack bar chart.

ggplot(student,aes(x=G3,fill=sex))+geom_bar(position="stack")+theme(axis.text.x = element_text(angle = 45, hjust = 1))+
  labs(x="Note (G3)",y="Sex",title="Notes des élèves par sexe")

On fait ensuite une comparaison avec des % pour mieu representer le graph.

ggplot(student,aes(x=G3,fill=sex))+geom_bar(position="fill")+theme(axis.text.x = element_text(angle = 45, hjust = 1))+
  labs(x="Note (G3)",y="Sexe",title="Notes des élèves par sexe en %")

4.2 Effectuer des tests t pour comparer par paire la moyenne de certaines variables quantitatives en fonction des deux niveaux de certaines variables catégorielles binaires.

Créer un ensemble de données constitué uniquement de données mathématiques, avec des variables sexe (sex) et note finale(G3.

dataSexG3 = subset(student, select = c(sex, G3))
glimpse(dataSexG3)
## Rows: 395
## Columns: 2
## $ sex <chr> "F", "F", "F", "F", "F", "M", "M", "F", "M", "M", "F", "F", "M", …
## $ G3  <dbl> 6, 6, 10, 15, 10, 15, 11, 6, 19, 15, 9, 12, 14, 11, 16, 14, 14, 1…

Nous avons donc une variable catégorielle qui est le sex. Et nous avons une variable quantitative qui est *G3$ (note final)

Histograms/barplot des différentes variables qui seront pertinentes pour les tests statistiques.

sexGraph <- table(dataSexG3$sex)

par(mfrow=c(2,2))
hist(dataSexG3$G3, breaks = 30, col = "darkblue", main = "Histogram de la variable student")
barplot(sexGraph, col="darkblue", main = "Barplot de la variable sex")

Graphiques de densité pour l’âge, les absences et le note finale

G3Dens <- density(dataSexG3$G3)
plot(G3Dens)

Nous pouvons voir quelques tendances claires dans les données.Il y a seulement un peu plus de femmes que d’hommes, et la note finale en mathématiques est à peu près également répartie.le plus grand nombre de personnes qui ont échoué aux tests, c’est-à-dire qui ont reçu la note 0, fera pencher toute analyse des moyennes des notes finales nettement vers la gauche. Cela est assez évident si l’on regarde le graphique de densité ci-dessus.

4.2 Effectuer des tests pour comparer par paire la moyenne de certaines variables quantitatives en fonction des deux niveaux de certaines variables catégorielles binaires.

Le test de Bartlett

bartlett.test(G3[dataSexG3$G3 > 0] ~ sex[dataSexG3$G3 > 0], data=dataSexG3)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  G3[dataSexG3$G3 > 0] by sex[dataSexG3$G3 > 0]
## Bartlett's K-squared = 0.12148, df = 1, p-value = 0.7274

Le test de Levene

leveneTest(y = dataSexG3$G3, group = dataSexG3$sex)

Visualisation par Boxplot des notes finales pour chaque sexe.

ggplot(dataSexG3, aes(x = sex, y = G3)) +
        geom_boxplot(col = "black") +
        ggtitle("Moyennes des notes finales par sexe")

En se basant sur les deux tests et la visualisation des données en question, on peut affirmer sans risque que l’hypothèse d’homogénéité de la variance est remplie dans cet exemple.

L’homogénéité des variances t.test

t.test(dataSexG3$G3[dataSexG3$sex=="F" & dataSexG3$G3>0], dataSexG3$G3[dataSexG3$sex=="M" & dataSexG3$G3>0])
## 
##  Welch Two Sample t-test
## 
## data:  dataSexG3$G3[dataSexG3$sex == "F" & dataSexG3$G3 > 0] and dataSexG3$G3[dataSexG3$sex == "M" & dataSexG3$G3 > 0]
## t = -1.9386, df = 351.54, p-value = 0.05335
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.331331307  0.009583978
## sample estimates:
## mean of x mean of y 
##  11.20541  11.86628

Les notes finales moyennes des filles et des garçons sont présentées dans la console après avoir effectué le test t. Les filles ont obtenu une note de 11,20, et les garçons une note moyenne de 11,86. Cette différence est égale à environ 0,66.

4.3 ANOVA pour trouver la différence entre l’âge et les notes

age.g3 <- aov(G3 ~ factor(age), data = student)
TukeyHSD(age.g3)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = G3 ~ factor(age), data = student)
## 
## $`factor(age)`
##             diff        lwr        upr     p adj
## 16-15 -0.2272514  -2.265444  1.8109414 0.9999747
## 17-15 -0.9805874  -3.046104  1.0849292 0.8346939
## 18-15 -1.7073171  -3.862680  0.4480461 0.2374238
## 19-15 -3.0477642  -6.250733  0.1552050 0.0753852
## 20-15  2.7439024  -5.368590 10.8563947 0.9695415
## 21-15 -4.2560976 -18.141054  9.6288584 0.9825598
## 22-15 -3.2560976 -17.141054 10.6288584 0.9965457
## 17-16 -0.7533359  -2.696271  1.1895995 0.9368291
## 18-16 -1.4800657  -3.518258  0.5581271 0.3461517
## 19-16 -2.8205128  -5.945837  0.3048114 0.1110364
## 20-16  2.9711538  -5.110997 11.0533052 0.9521487
## 21-16 -4.0288462 -17.896097  9.8384045 0.9872488
## 22-16 -3.0288462 -16.896097 10.8384045 0.9977951
## 18-17 -0.7267297  -2.792246  1.3387868 0.9621847
## 19-17 -2.0671769  -5.210389  1.0760349 0.4802791
## 20-17  3.7244898  -4.364595 11.8135750 0.8555397
## 21-17 -3.2755102 -17.146803 10.5957828 0.9963925
## 22-17 -2.2755102 -16.146803 11.5957828 0.9996581
## 19-18 -1.3404472  -4.543416  1.8625221 0.9074950
## 20-18  4.4512195  -3.661273 12.5637118 0.7052971
## 21-18 -2.5487805 -16.433736 11.3361755 0.9992827
## 22-18 -1.5487805 -15.433736 12.3361755 0.9999746
## 20-19  5.7916667  -2.659721 14.2430543 0.4242194
## 21-19 -1.2083333 -15.293979 12.8773127 0.9999958
## 22-19 -0.2083333 -14.293979 13.8773127 1.0000000
## 21-20 -7.0000000 -22.936089  8.9360893 0.8835131
## 22-20 -6.0000000 -21.936089  9.9360893 0.9457419
## 22-21  1.0000000 -18.517644 20.5176436 0.9999999

Les résultats montrent qu’il n’y a pas de différence dans les notes finales entre les différents groupes d’âge. Les valeurs p Adj sont toutes supérieures à 0,05.

5 Clustering

5.1 K-moyennes

Preparion de la donné

# nombre de ligne
nbl <- 40
# creation du data frame
kdf <- data.frame(mprbig$age,mprbig$studytime,mprbig$failures,mprbig$absences,mprbig$G1,mprbig$G2,mprbig$G3)
#scaling the data
kdf <- scale(kdf[0:nbl,])

Désignation du meilleur nombre de clusters

#Average Silhouette Method
fviz_nbclust(kdf, kmeans, method = "silhouette")

#Gap Statistic Method (methode pour savoir le nombre de cluster)
gap_stat <- clusGap(kdf, FUN = kmeans, nstart = 25, K.max = 10)
fviz_gap_stat(gap_stat)

Visualisation des clusters

krbig <- kmeans(kdf, centers = 2, nstart = 50)
fviz_cluster(krbig, data = kdf)

Anlalise des clusters

fkrbig <- cbind(mprbig[0:nbl,], clusterNum = krbig$cluster)
ggplot(fkrbig, aes(x = clusterNum, y = G3)) + 
  geom_boxplot(aes(group = clusterNum)) + 
  stat_summary(fun = "mean", geom = "point", size= 2) +
  ggtitle("Note par rapport au cluster")

Dans le le graphique ci-dessus, nous pouvons observer que le premier cluster montre ceux qui ont reussi et dans le deuxiéme cluster ceux qui n’ont pas réussi.

On remarque que les cluster se font par rapport au note , on peux en déduire que les variables utilisées n’ont pas d’influence sur les notes

5.2 Regroupement hiérarchique

Visualisation du Regroupement hiérarchique

#nombre de ligne
nbl <- 40
#creation du data frame
hdf <- data.frame(mprbig$age,mprbig$studytime,mprbig$failures,mprbig$absences,mprbig$G1,mprbig$G2,mprbig$G3)
# la matrice de distance
distmat <- dist(hdf[0:nbl,],method = 'euclidean')
hrbig <- hclust(distmat)
plot(hrbig)

On remarque bien qu’il y a deux grande partie

Découpe de l’arbre en clusters

#decoupe de l'arbre en cluster
cut <- cutree(hrbig,2)
plot(hrbig)
rect.hclust(hrbig , k = 2, border = 2:6)

Analise des donner dans chaque clusters

fhrbig <- cbind(mprbig[0:nbl,], clusterNum = cut)
ggplot(fhrbig, aes(x = clusterNum, y = G3)) + 
  geom_boxplot(aes(group = clusterNum)) + 
  stat_summary(fun = "mean", geom = "point", size= 2) +
  ggtitle("Note par rapport au cluster")

On remarque que c’est la meme disposition qu’avec le k-moyenne mais les cluster sont inversés : dans le premier nous avons les moins bonne notes et dans le 2ieme les meilleurs notes

On remarque les mêmes clusters que le k-moyenne, on peux dire que les variable utilisé n’ont pas d’influence sur les notes

6 Conlusion

Suite à l’étude que nous avons mené sur les données du fichier CSV/XLXS, nous pouvons conclure que le facteur qui influe le plus sur la notation des étudiants est le genre. En effet, nous avons constaté que les filles sont beaucoup plus motivée à l’idée de poursuivre des études supérieures et ont plus de support pédagogique que les garçons(support de cours personnel supplémentaire).

Pour les garçons, ils sont plus âgés, étudient moins et ont plus d’absences que les filles. Cela entraîne un retard qu’ils n’arrivent pas à rattraper par la suite.

Ce qui permet donc d’affirmer que les filles s’en mieux que les garçons dans leurs études de manière générale.